import org.junit.Test;

public class StringBuliderAPI{
    /**字符串大量拼接:注意String造成内存溢出
     * String str= "123"+st;
     * String st="456";
     */
    @Test
    public void testString(){
        String str ="字符串";
        for(int i=0;i<1000000000;i++){
            str +=i;
            System.out.println(str);

        }
    }
    /**
     * String---不可改变对象
     * 假设：拼接出100000000000w个String--内存【开销过大】
     * * 操作系统发现内存空间越来越小，会去硬盘上开辟空间--程序、电脑会卡
     * *
     * * 解决方案：不创建新对象，原来对象实现拼接【添加、替换、插入】
     * * StringBuilder对象      可变字符串对象
     * * 语法： StringBuilder sb=new StringBuilder("字符串");
     *
     */
    @Test
    public void testSB(){
        //创建可变的字符串对象[解决String大量拼接,造成内存溢出]
        String str="你就是我的";
        StringBuilder sb=new StringBuilder(str);
        //append方法 添加新字符串,等同于加号[拼接]
        sb.append("小可爱~");
        System.out.println(sb);

    }
   //***********
    /**
     * replace方法 替换 返回值:String
     * 作用:可以将字符串中指定范围内的内容替换成给定的内容
     * 含头不含尾
     * 替换格式 replace(int start,int end,String str)
     * 开始位置,结束位置,替换内容
     *
     */
    @Test
    public void testReplace(){
        //创建StringBuilder可变字符串类
        StringBuilder sb= new StringBuilder("你就是我的小可爱");
        sb.replace(5,8,"小Baby");
        System.out.println(sb);

    }
/**
 * insert方法 插入 返回值:String
 * 作用:将给定的字符串插入到当前字符串的某个位置
 * Insert(int index,String str)
 *插入位置,插入内容
 *
 */
@Test
    public void testInsert(){
    //创建 可变字符串
    StringBuffer sb=new StringBuffer("你就是我的小可爱");
            sb.insert(0,"今天");
            System.out.println(sb);
}
/**
 * 考试题
 * StringBulider和StringBuffer的区别?
 * StringBulider和StringBuffer---方法完全一致[追加,替换,插入]
 */
}
